package com.atguigu.day19.steam;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.function.Predicate;
import java.util.stream.Stream;

/*
流式编程: 目的写出简洁高效的代码
  创建:
      集合
      数组
      Stream.of()有限
      Stream.generate()无限
  中间
     去重 Stream distinct()
     过滤 Stream filter()
     排序 Stream sorted()
     限制数量 Stream limit()
     跳过指定数量 Stream skip()
     将流中的每个值都换成另一个流，然后把所有流连接成一个流 Stream flatMap
  终结: 只能有一个
     迭代 Stream
     匹配
     数量
     查找
     获取最值
     将流中的值进行合并
     收集数据
流的特点:
   1.延迟执行 必须有终结操作 才会执行中间操作
   2.不会对数据源数据造车影响
   3.一旦对流操作会产生新的流 使用新的流进行下一步操作


 */
public class StreamTest {
    @Test
    public void test02() {
        ArrayList<Integer> list = new ArrayList<>();

        Collections.addAll(list, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20);
        //创建流
        Stream<Integer> stream = list.stream();

        //中间操作
       stream= stream.filter(i -> i % 2 == 0);


        stream.forEach(System.out::println);


    }

    @Test
    public void test01() {

        ArrayList<Integer> list = new ArrayList<>();

        Collections.addAll(list, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20);

        list.stream()

                .filter(i -> i % 2 == 0)

                .forEach(System.out::println);


        System.out.println("list = " + list);

    }
}
